#include <stdio.h>

void swapInt(int *a, int *b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

// 冒泡排序 —— 拉跨
// 我们考虑升序。
// 冒泡：泡泡指的是最大的数，它会像泡泡一样升到数组的最后。
// 一共要循环 n-1轮冒泡。
// 第一轮：i∈[0, n-1], 完成对区间[0, n-1]最大值的冒泡
// 第二轮：i∈[0, n-2], 完成对区间[0, n-2]最大值的冒泡
// 第n-1轮：i∈[0, 1], 完成对区间[0, 1]最大值的冒泡
void bubbleSort(int *a, int n)
{
    for (int j = 0; j < n - 1; j++)
    {
        for (int i = 0; i < n - j - 1; i++) 
        {
            if (a[i] > a[i + 1])
            {
                swapInt(&a[i], &a[i + 1]);
            }
        }
    }
}

int main()
{
    int arr[] = {9, 8, 7, 5, 4, 3, 2, 1, 8};
    int sz = sizeof(arr) / sizeof(arr[0]);
    bubbleSort(arr, sz);
    for (int i = 0; i < sz; i++)
    {
        printf("%d ",arr[i]);
    }
    printf("\n");
    return 0;
}